#include <iostream>
#include <cstdio>
#include <cstring>
typedef long long ll;
using namespace std;
ll dp[505];
int result(int a) {
    if (a<0) return 0;
    return dp[a];
}
int main() {
    int n,m;
    cin>>m>>n;
    ll a[n][m];
    for (int i=0; i<n; i++) {
        for (int j=0; j<m; j++) {
            scanf("%lld", &a[i][j]);
        }
    }
    memset(dp, 0, sizeof(dp));
    ll column;
    ll max=0;
    ll max1,max2;
    ll cnt[m];
    for (int j=0; j<n; j++) {
        max2=0;
        memset(cnt,0,sizeof(cnt));
        for (int i=j; i>=0; i--) {
            memset(dp,0,sizeof(dp));
            max1=0;
            for (int k=0; k<m; k++) {
                column=a[i][k]+cnt[k];
                cnt[k]=column;
                if (result(k-1)+column<0) dp[k]=0;
                else dp[k]=result(k-1)+column;
                if (dp[k]>max1) max1=dp[k];
            }
            if (max1>max2) max2=max1;
        }
        if (max2>max) max=max2;
    }
    cout<<max<<endl;
    return 0;
}
